package co.sumset.log;

import java.io.IOException;
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;

/**
 * Esta clase es la encargada de recopilar en un archivo 
 * los informes de errores y notificaciones importantes 
 * durante la ejecucion de la aplicacion, para que con 
 * esta informacion, se le pueda hacer un seguimiento 
 * al software de manera periodica, revisando los 
 * errores o eventos ocurridos
 * 
 * @author Cristian Raul Pineda Rodriguez
 *
 */
public class MiLogger
{
	Logger logger = Logger.getLogger("MyLog");//Captura la informacion dle archivo Log
	FileHandler fh;// el Manejador de archivos.

	/**
	 * Metodo constructor.
	 */
	public MiLogger()
	{
		try 
		{
			/*
			 * En esta parte se configura el controlador 
			 * y el formateador del logger
			 */
			fh = new FileHandler("src\\co\\sumset\\log\\MyLog.log", true);
			logger.addHandler(fh);
			logger.setLevel(Level.ALL);
			SimpleFormatter formatter = new SimpleFormatter();
			fh.setFormatter(formatter);
		}
		catch (SecurityException e1) 
		{
			imprimirMensaje(3,"error de seguridad en el logger");
		}
		catch (IOException e) 
		{
			imprimirMensaje(3,"error de escritura de archivo en el logger");
		}
	}

	/**
	 * Este metodo permite imprimir un nuevo mensaje
	 * en el archivo Log indicando el tipo de mensaje
	 * (1-Advertencia, 2-Informacion, 3-Error Grave)
	 * 
	 * @param tipoMensaje el tipo del mensaje a imprimir 
	 * @param mensaje el mensaje a imprimir
	 */
	public void imprimirMensaje(int tipoMensaje,String mensaje)
	{
		switch (tipoMensaje) 
		{
		case 1:logger.log(Level.WARNING,mensaje+"\n");
		break;

		case 2:logger.log(Level.FINE,mensaje+"\n");
		break;

		case 3:logger.log(Level.SEVERE,mensaje+"\n");
		break;

		default:
			break;
		}
	}
}